package com.hishop.common.validator.group;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

/**
 * ListValueConstraintValidator
 * ListValue 实现的注解
 * Integer 标注自定义注解的属性类型
 *
 * @author ChenYanMei
 * @version 2024/4/18
 */
public class ListValueConstraintValidator implements ConstraintValidator<ListValue, Integer> {
    // 创建一个Set集合用来放指定的值{0,1}
    private Set<Integer> set = new HashSet();

    /**
     * 初始化方法
     *
     * @param constraintAnnotation
     */
    @Override
    public void initialize(ListValue constraintAnnotation) {
        // 获取到指定的值
        int[] vals = constraintAnnotation.vals();

        // 遍历指定的值的数组
        for (int val : vals) {
            // 存放入set集合里面
            set.add(val);
        }
    }

    /**
     * 判断是否校验成功
     *
     * @param integer                    标注了自定义注解 @ListValue 的属性传来的值
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
        // set 集合中有 integer，说明校验成功，否则失败
        return set.contains(integer);
    }
}
